#ifndef VENUS_GEOMETRY_RAY_H
#define VENUS_GEOMETRY_RAY_H

#include "common/venus.h"
#include "vector3.h"
#include "point.h"

namespace venus {
struct Ray {	
  Ray() : tmin(0.f), tmax(FLT_MAX) { }

  Ray(const Point &o, const Vector3 &d, float tmin = 0, 
      float tmax = FLT_MAX ) : o(o), d(d), tmin(tmin), tmax(tmax), 
  inv_d(1/d.x, 1/d.y, 1/d.z) { }

  Point o;
  mutable float tmin, tmax;
  //float time;
  //int depth;
  Vector3 d, inv_d;
};	
}//namespace venus

#endif//VENUS_GEOMETRY_RAY_H
